#ifndef COMMUNTCATIONINFO_H
#define COMMUNTCATIONINFO_H

#include <QTcpSocket>
#include <cstdint>
#include <QDataStream>

// 定义操作类型
typedef enum {
    OPERATION_NONE = 1,
    OPERATION_UPLOAD = 2,
    OPERATION_DOWNLOAD = 3,
    OPERATION_REFRESH = 4,
    OPERATION_REMOVE = 5
    // 可以添加更多操作
} OperationType;

// 定义结果类型
typedef enum {
    RESULT_NULL = 0,
    RESULT_SUCCESS = 1,
    RESULT_FAILURE = 2,
    RESULT_ERROR = 3,
    // 可以添加更多结果类型
} ResultType;

// 通信协议的头信息，定义消息类型和消息长度
typedef struct {
    uint32_t messageType;
    uint32_t messageLength;
} MessageHeader;

// 服务器与客户端通信的结构体
typedef struct {
    MessageHeader header; // 消息头，包含消息类型和长度
    char username[50];    // 用户名
    OperationType operation; // 操作类型
    ResultType result; // 结果类型
    char filename[100]; // 文件名
    // size_t size;        // 结构体大小
    // 其他可能需要的字段...
} CommunicationInfo;

// // 重载 QDebug 的 << 运算符
// QDebug operator<<(QDebug debug, const CommunicationInfo &info) {
//     debug.nospace() << "CommunicationInfo("
//                     << "messageType:" << static_cast<int>(info.header.messageType)
//                     << ", messageLength:" << info.header.messageLength
//                     << ", username:" << info.username
//                     << ", operation:" << static_cast<int>(info.operation)
//                     << ", result:" << static_cast<int>(info.result)
//                     << ", filename:" << info.filename
//                     << ")";

//     return debug;
// }
#endif // COMMUNTCATIONINFO_H
